package com.xd.study.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

import com.xd.study.R;

/**
 * Created by DGF on 2015/4/29.
 */
public class ScrollViewActivity extends Activity {

    private TextView textView;
    private ScrollView scrollView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.scrollview);

        textView = (TextView)this.findViewById(R.id.scrollview_text);
        textView.setText(getResources().getString(R.string.scrollview_text));

        scrollView = (ScrollView)this.findViewById(R.id.scrollview);
//        scrollView.setVerticalScrollBarEnabled(true);//代码设置滚动条的可见性

        /**
         * 判断滚动条何时到达底部，可用于滚动条到底时继续加载
         */
        scrollView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    //手指滑动的事件
                    case MotionEvent.ACTION_MOVE:
                        /**
                         * getScrollY() -- 滚动条滑动的距离
                         * getMeasuredHeight() -- 控件的总高度
                         * getHeight() -- 控件显示的高度
                         */

                        //滚动条在顶部，未发生滚动
                        if (scrollView.getScaleY() <= 0) {
                            Toast.makeText(ScrollViewActivity.this, "滚动条在顶部，未发生滚动", Toast.LENGTH_SHORT).show();
                        }

                        //滚动条在底部
                        //TextView总高度 <= 一屏幕的高度 + 滚动条的滚动距离
                        if (scrollView.getChildAt(0).getMeasuredHeight() <= scrollView.getHeight() + scrollView.getScrollY()) {
                            Toast.makeText(ScrollViewActivity.this,
                                    "滚动条滑动到底部\n总高度: " + scrollView.getChildAt(0).getMeasuredHeight()
                                            + "\n一屏幕的高度: " + scrollView.getHeight()
                                            + "\n滚动条的滚动距离: " + scrollView.getScrollY(),
                                    Toast.LENGTH_SHORT).show();

                            //滚动条底部追加内容
                            //textView.append(getResources().getString(R.string.scrollview_text));
                        }

                        break;
                }
                return false;
            }
        });

        /**
         * 滚动到指定位置
         * ScrollView.scrollTo(x,y)：以滚动视图起始位置开始计算，持续点击滚动视图不会发生变化。
         * ScrollView.scrollBy(x,y)：以前一视图的位置开始滚动，持续点击将滚动视图。
         */
        Button btnUp = (Button)this.findViewById(R.id.scrollview_btn_up);
        Button btnDown = (Button)this.findViewById(R.id.scrollview_btn_down);

        btnUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scrollView.scrollBy(0, -30);
            }
        });

        btnDown.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scrollView.scrollBy(0, 30);
            }
        });

    }
}
